home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #302 (1994)(Rhein-Sieg-Soft).zip / Franz PD Disk #302 (1994)(Rhein-Sieg-Soft).adf / Zeitansage / Zeitansage.p < prev    next >
Text File  |  1996-12-24  |  7KB  |  242 lines

  1. PROGRAM Zeitansage;
  2.  
  3. USES Exec, ExecIO;
  4.  
  5. {$Include "Devices/Narrator.h"}
  6. {$Include "Devices/Timer.h"}
  7. {$opt b-}
  8.  
  9. CONST version = '$VER: Zeitansage 1.0 (17.9.93)';
  10.  
  11. CONST
  12.   TEXT_VOR = 'BAY2M  NAE4/CSTEHN  TOH4N  IX3ST  EH2S';
  13.   TEXT_EIN = 'AY4N';
  14.   TEXT_0 = 'NUH4L';
  15.   TEXT_1 = 'AY4NEH';
  16.   TEXT_2 = 'TSWAY4';
  17.   TEXT_3 = 'DRAY4';
  18.   TEXT_4 = 'FIY4R';
  19.   TEXT_5 = 'FAH4NF';
  20.   TEXT_6 = 'ZEH4KS';
  21.   TEXT_7 = 'ZIY4BEHN';
  22.   TEXT_8 = 'AA4/CT';
  23.   TEXT_9 = 'NOY4N';
  24.   TEXT_10 = 'TSEH4N';
  25.   TEXT_11 = 'EH4LF';
  26.   TEXT_12 = 'TSWER4LF';
  27.   TEXT_13 = 'DRAY4TSEH4N';
  28.   TEXT_14 = 'FIY4RTSEH4N';
  29.   TEXT_15 = 'FAH4NFTSEH4N';
  30.   TEXT_16 = 'ZEH4CHTSEH4N';
  31.   TEXT_17 = 'SIY3BTSEH4N';
  32.   TEXT_18 = 'AA4/CTTSEH4N';
  33.   TEXT_19 = 'NOY4NTSEH4N';
  34.   TEXT_20 = 'TSWAH4NTSIHG';
  35.   TEXT_21 = 'AY4NUH1ND TSWAH3NTSIHG';
  36.   TEXT_22 = 'TSWAY4UH1ND TSWAH3NTSIHG';
  37.   TEXT_23 = 'DRAY4UH1ND TSWAH3NTSIHG';
  38.   TEXT_24 = 'FIY4RUH1ND TSWAH3NTSIHG';
  39.   TEXT_25 = 'FAH4NFUH1ND TSWAH3NTSIHG';
  40.   TEXT_26 = 'ZEH4KSUH1ND TSWAH3NTSIHG';
  41.   TEXT_27 = 'ZIY4BEHNUH1ND TSWAH3NTSIHG';
  42.   TEXT_28 = 'AA4/CTUH1ND TSWAH3NTSIHG';
  43.   TEXT_29 = 'NOY4NUH1ND TSWAH3NTSIHG';
  44.   TEXT_30 = 'DRAY4SIHG';
  45.   TEXT_31 = 'AY4NUH1NDRAY3SIHG';
  46.   TEXT_32 = 'TSWAY4UH1NDRAY3SIHG';
  47.   TEXT_33 = 'DRAY4UH1NDRAY3SIHG';
  48.   TEXT_34 = 'FIY4RUH1NDRAY3SIHG';
  49.   TEXT_35 = 'FAH4NFUH1NDRAY3SIHG';
  50.   TEXT_36 = 'ZEH4KSUH1NDRAY3SIHG';
  51.   TEXT_37 = 'ZIY4BEHNUH1NDRAY3SIHG';
  52.   TEXT_38 = 'AA4/CTUH1NDRAY3SIHG';
  53.   TEXT_39 = 'NOY4NUH1NDRAY3SIHG';
  54.   TEXT_40 = 'FIH4ERTSIHG';
  55.   TEXT_41 = 'AY4NUH1ND FIH3ERTSIHG';
  56.   TEXT_42 = 'TSWAY4UH1ND FIH3ERTSIHG';
  57.   TEXT_43 = 'DRAY4UH1ND FIH3ERTSIHG';
  58.   TEXT_44 = 'FIY4RUH1ND FIH3ERTSIHG';
  59.   TEXT_45 = 'FAH4NFUH1ND FIH3ERTSIHG';
  60.   TEXT_46 = 'ZEH4KSUH1ND FIH3ERTSIHG';
  61.   TEXT_47 = 'ZIY4BEHNUH1ND FIH3ERTSIHG';
  62.   TEXT_48 = 'AA4/CTUH1ND FIH3ERTSIHG';
  63.   TEXT_49 = 'NOY4NUH1ND FIH3ERTSIHG';
  64.   TEXT_50 = 'FAH4NFTSIHG';
  65.   TEXT_51 = 'AY4NUH1ND FAH3NFTSIHG';
  66.   TEXT_52 = 'TSWAY4UH1ND FAH3NFTSIHG';
  67.   TEXT_53 = 'DRAY4UH1ND FAH3NFTSIHG';
  68.   TEXT_54 = 'FIY4RUH1ND FAH3NFTSIHG';
  69.   TEXT_55 = 'FAH4NFUH1ND FAH3NFTSIHG';
  70.   TEXT_56 = 'ZEH4KSUH1ND FAH3NFTSIHG';
  71.   TEXT_57 = 'ZIY4BEHNUH1ND FAH3NFTSIHG';
  72.   TEXT_58 = 'AA4/CTUH1ND FAH3NFTSIHG';
  73.   TEXT_59 = 'NOY4NUH1ND FAH3NFTSIHG';
  74.   TEXT_UHR = 'UW4ER';
  75.   TEXT_MINUTE = 'MIHNUH6DXTEH';
  76.   TEXT_MINUTEN = 'MIHNUH6DXTEHN';
  77.   TEXT_UND = 'UH1ND';
  78.   TEXT_SEKUNDE = 'SEHKUH4NDEH.';
  79.   TEXT_SEKUNDEN = 'SEHKUH4NDEHN.';
  80.   TEXT_PIEP = 'IY9';
  81.  
  82. TYPE zahlentyp = ARRAY [0 .. 59] OF STRING [40];
  83.  
  84. VAR nport: p_MsgPort;
  85.     nio: p_narrator_rb;
  86.     aud_ChanMasks: ARRAY [0 .. 3] OF BYTE;
  87.     time: timeval;
  88.     zahlen: zahlentyp;
  89.  
  90. PROCEDURE GetTime;
  91.   VAR tport: p_MsgPort;
  92.       tio: p_timerequest;
  93.       d: BYTE;
  94.   BEGIN
  95.     time := timeval (0, 0);
  96.                              { Fehlerbehandlung übernimmt das Laufzeitsystem }
  97.     tport := CreatePort (NIL, 0);
  98.     tio := CreateExtIO (tport, SizeOf (timerequest));
  99.     Open_Device ('timer.device', UNIT_VBLANK, Ptr (tio), 0);
  100.     tio^.tr_node.io_Command := TR_GETSYSTIME;
  101.     tio^.tr_node.io_Flags := IOF_QUICK;
  102.     d := DoIO (Ptr (tio));
  103.     time.tv_secs := tio^.tr_time.tv_secs + 10;
  104.     Close_Device (Ptr (tio));
  105.     DeleteExtIO (tio);
  106.     DeletePort (tport);
  107.   END; { GetTime }
  108.  
  109. PROCEDURE WaitTime;
  110.   VAR tport: p_MsgPort;
  111.       tio: p_timerequest;
  112.       d: BYTE;
  113.   BEGIN
  114.                              { Fehlerbehandlung übernimmt das Laufzeitsystem }
  115.     tport := CreatePort (NIL, 0);
  116.     tio := CreateExtIO (tport, SizeOf (timerequest));
  117.     Open_Device ('timer.device', UNIT_WAITUNTIL, Ptr (tio), 0);
  118.     tio^.tr_node.io_Command := TR_ADDREQUEST;
  119.     tio^.tr_time := time;
  120.     d := DoIO (Ptr (tio));
  121.     Close_Device (Ptr (tio));
  122.     DeleteExtIO (tio);
  123.     DeletePort (tport);
  124.   END; { WaitTime }
  125.  
  126. PROCEDURE SageVorText;
  127.   VAR s: Str;
  128.       d: BYTE;
  129.   BEGIN
  130.     s := TEXT_VOR;
  131.     nio^.message.io_Command := CMD_WRITE;
  132.     nio^.message.io_Data := Ptr (s);
  133.     nio^.message.io_Length := Length (s);
  134.     nio^.rate := DEFRATE;
  135.     nio^.pitch := DEFPITCH;
  136.     nio^.mode := DEFMODE;
  137.     nio^.sex := DEFSEX;
  138.     nio^.volume := DEFVOL;
  139.     nio^.sampfreq := DEFFREQ;
  140.     nio^.mouths := 0;
  141.     d := DoIO (Ptr (nio));
  142.   END; { SageVorText }
  143.  
  144. PROCEDURE SageStunden (st: INTEGER);
  145.   VAR s: STRING [255];
  146.       d: BYTE;
  147.   BEGIN
  148.     s := zahlen [st] + '  ' + TEXT_UHR;
  149.     nio^.message.io_Command := CMD_WRITE;
  150.     nio^.message.io_Data := Ptr (^s);
  151.     nio^.message.io_Length := Length (s);
  152.     d := DoIO (Ptr (nio));
  153.   END; { SageStunden }
  154.  
  155. PROCEDURE SageMinuten (min: INTEGER);
  156.   VAR s: STRING [255];
  157.       d: BYTE;
  158.   BEGIN
  159.     IF min = 1 THEN
  160.       s := TEXT_1 + '  ' + TEXT_MINUTE
  161.     ELSE
  162.       s := zahlen [min] + '  ' + TEXT_MINUTEN;
  163.     nio^.message.io_Command := CMD_WRITE;
  164.     nio^.message.io_Data := Ptr (^s);
  165.     nio^.message.io_Length := Length (s);
  166.     d := DoIO (Ptr (nio));
  167.   END; { SageMinuten }
  168.  
  169. PROCEDURE SageSekunden (sek: INTEGER);
  170.   VAR s: STRING [255];
  171.       d: BYTE;
  172.   BEGIN
  173.     IF sek = 1 THEN
  174.       s := TEXT_UND + TEXT_1 + '  ' + TEXT_SEKUNDE
  175.     ELSE
  176.       s := TEXT_UND + zahlen [sek] + '  ' + TEXT_SEKUNDEN;
  177.     nio^.message.io_Command := CMD_WRITE;
  178.     nio^.message.io_Data := Ptr (^s);
  179.     nio^.message.io_Length := Length (s);
  180.     d := DoIO (Ptr (nio));
  181.   END; { SageSekunden }
  182.  
  183. PROCEDURE ErzeugeTon;
  184.   VAR s: Str;
  185.       d: BYTE;
  186.   BEGIN
  187.     s := TEXT_PIEP;
  188.     nio^.message.io_Command := CMD_WRITE;
  189.     nio^.message.io_Data := Ptr (s);
  190.     nio^.message.io_Length := Length (s);
  191.     nio^.rate := DEFRATE;
  192.     nio^.pitch := MAXPITCH;
  193.     nio^.mode := DEFMODE;
  194.     nio^.sex := FEMALE;
  195.     nio^.volume := DEFVOL;
  196.     nio^.sampfreq := DEFFREQ;
  197.     nio^.mouths := 0;
  198.     d := DoIO (Ptr (nio));
  199.   END; { ErzeugeTon }
  200.  
  201. PROCEDURE doit;
  202.  VAR i:BYTE;
  203.   BEGIN
  204.     zahlen := zahlentyp (TEXT_0,  TEXT_EIN,  TEXT_2,  TEXT_3,  TEXT_4,
  205.                          TEXT_5,  TEXT_6,  TEXT_7,  TEXT_8,  TEXT_9,
  206.                          TEXT_10, TEXT_11, TEXT_12, TEXT_13, TEXT_14,
  207.                          TEXT_15, TEXT_16, TEXT_17, TEXT_18, TEXT_19,
  208.                          TEXT_20, TEXT_21, TEXT_22, TEXT_23, TEXT_24,
  209.                          TEXT_25, TEXT_26, TEXT_27, TEXT_28, TEXT_29,
  210.                          TEXT_30, TEXT_31, TEXT_32, TEXT_33, TEXT_34,
  211.                          TEXT_35, TEXT_36, TEXT_37, TEXT_38, TEXT_39,
  212.                          TEXT_40, TEXT_41, TEXT_42, TEXT_43, TEXT_44,
  213.                          TEXT_45, TEXT_46, TEXT_47, TEXT_48, TEXT_49,
  214.                          TEXT_50, TEXT_51, TEXT_52, TEXT_53, TEXT_54,
  215.                          TEXT_55, TEXT_56, TEXT_57, TEXT_58, TEXT_59);
  216.     GetTime;
  217.     SageVorText;
  218.     SageStunden ((time.tv_secs DIV 3600) MOD 24);
  219.     SageMinuten ((time.tv_secs DIV 60) MOD 60);
  220.     SageSekunden (time.tv_secs MOD 60);
  221.     WaitTime;
  222.     ErzeugeTon;
  223.   END; { doit }
  224.  
  225. BEGIN
  226.                              { Fehlerbehandlung übernimmt das Laufzeitsystem }
  227.   nport := CreatePort (NIL, 0);
  228.   nio := CreateExtIO (nport, SizeOf (narrator_rb));
  229.   aud_ChanMasks [0] := 3;
  230.   aud_ChanMasks [1] := 5;
  231.   aud_ChanMasks [2] := 10;
  232.   aud_ChanMasks [3] := 12;
  233.   nio^.ch_masks := ^aud_ChanMasks;
  234.   nio^.nm_masks := SizeOf (aud_ChanMasks);
  235.   Open_Device ('narrator.device', 0, Ptr (nio), 0);
  236.   doit;
  237.   Close_Device (Ptr (nio));
  238.   DeleteExtIO (nio);
  239.   DeletePort (nport);
  240. END. { Zeitansage }
  241.  
  242.